﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace modele.impl
{
    using modele.interfaces;
    [Serializable]
    /**
     * \file FabriqueEii.cs
     * \brief Classe représentant les informations d'une cases non relative à son type
     * \author Alexandre Carteron et Charles Robin
     * \version 1.0
     * \date 16/12/2012
     * 
     * Classe représentant les informations d'une cases non relative à son type
     */
    class InfosCaseImpl : InfosCase
    {
        public List<Unite> unites { get; set; }/*!<Liste représentant les différentes unités disponible sur la case */

        public Ville dependanceVille { get; set; }/*!< Ville représente la case dont la ville dépend, si elle est sous le controle d'une ville */

        public Ville ville { get; set; }/*!<représente la Ville présente sur cette case*/

        /**
          * \fn public InfosCaseImpl()
          * \brief Constructeur de la classe InfosCaseImpl
          */
        public InfosCaseImpl()
        {
            unites = new List<Unite>();
            dependanceVille = null;
            ville = null;
        }

        /**
         * \fn public Unite getHigherDef()
         * \brief Méthode permettant d'obtenir l'unité ayant la plus grande défense sur cette case
         * \return l'unité ayant la plus grande defense
         */
        public Unite getHigherDef()
        {
            int higherdef = 0;
            Unite res = null;
            foreach (UniteImpl u in this.unites)
            {
                if (u.defense > higherdef)
                {
                    res = u;
                }
            }
            return res;
        }
    }
}
